/***********************************************************************************************************************************
Buffer IO Read
***********************************************************************************************************************************/
#ifndef COMMON_IO_BUFFERREAD_H
#define COMMON_IO_BUFFERREAD_H

/***********************************************************************************************************************************
Buffer read object
***********************************************************************************************************************************/
typedef struct IoBufferRead IoBufferRead;

#include "common/io/read.h"

/***********************************************************************************************************************************
Constructor
***********************************************************************************************************************************/
IoBufferRead *ioBufferReadNew(const Buffer *buffer);

/***********************************************************************************************************************************
Functions
***********************************************************************************************************************************/
IoBufferRead *ioBufferReadMove(IoBufferRead *this, MemContext *parentNew);

/***********************************************************************************************************************************
Getters
***********************************************************************************************************************************/
IoRead *ioBufferReadIo(const IoBufferRead *this);

/***********************************************************************************************************************************
Destructor
***********************************************************************************************************************************/
void ioBufferReadFree(IoBufferRead *this);

/***********************************************************************************************************************************
Macros for function logging
***********************************************************************************************************************************/
#define FUNCTION_DEBUG_IO_BUFFER_READ_TYPE                                                                                         \
    IoBufferRead *
#define FUNCTION_DEBUG_IO_BUFFER_READ_FORMAT(value, buffer, bufferSize)                                                            \
    objToLog(value, "IoBufferRead", buffer, bufferSize)

#endif
